; Music of Heartland (1986) (Odin Software)
; Ripped by Megachur the 27/03/2009

	write "HEARTLAN.BIN"

music_date_rip	equ &1b39
music_adr	equ &b1a3
first_theme	equ 0
last_theme	equ 0	; 0 -> 0

	read "music_header_v1_0.asm"
;
.init_music
;
	ld hl,lb348
	ld (lb2cd),hl
	ld e,(hl)
	inc hl
	ld d,(hl)
	ex de,hl
	ld e,(hl)
	inc hl
	ld d,(hl)
	ld (lb2c9),hl
	ld (lb2cb),de
	ld a,#06
	ld (lb1dc),a
	ld (lb1de),a
	ld a,#07
	ld c,#38
	call lb2a5
	ret
	ld l,#03
	ld c,#00
.lb1cb
	ld a,#07
	add l
	call lb2a5
	dec l
	jr nz,lb1cb
	ld a,#07
	ld c,#3f
	call lb2a5
	ret
.lb1dc
	db #00
;
.play_music
;
.lb1de equ $ + 1
	ld a,#00
	dec a
	jr nz,lb1e5
	ld a,(lb1dc)
.lb1e5
	ld (lb1de),a
	ret nz
	call lb21b
	jr nc,lb217
	ld hl,(lb2cd)
	inc hl
	inc hl
	ld (lb2cd),hl
	ld e,(hl)
	inc hl
	ld d,(hl)
	inc hl
	ld a,e
	or d
	jr nz,lb209
	ld e,(hl)
	inc hl
	ld d,(hl)
	ld (lb2cd),de
	ex de,hl
	ld e,(hl)
	inc hl
	ld d,(hl)
.lb209
	ex de,hl
	ld e,(hl)
	inc hl
	ld d,(hl)
	ld (lb2cb),de
	ld (lb2c9),hl
	call lb21b
.lb217
	call lb26c
	ret
.lb21b
	ld a,#08
	ld c,#0f
	call lb2a5
	ld hl,(lb2c9)
	inc hl
	ld a,(hl)
	ld (lb2c9),hl
	cp #ff
	jr nz,lb23b
	scf
	ret
	inc hl
	inc hl
	inc hl
	ld e,(hl)
	inc hl
	ld d,(hl)
	ld (lb2c9),de
	ld a,(de)
.lb23b
	or a
	ret z
	and #7f
	ld l,a
	ld h,#00
	add hl,hl
	ld de,lb2d0
	add hl,de
	ld c,(hl)
	xor a
	call lb2a5
	ld a,#02
	inc c
	call lb2a5
	inc hl
	ld c,(hl)
	ld a,#01
	call lb2a5
	ld a,#03
	call lb2a5
	ld c,#0f
	ld a,#08
	call lb2a5
	ld a,#09
	call lb2a5
	or a
	ret
.lb26c
	ld hl,(lb2cb)
	inc hl
	ld a,(hl)
	cp #ff
	ld (lb2cb),hl
	jr nz,lb281
	inc hl
	ld e,(hl)
	inc hl
	ld d,(hl)
	ld (lb2cb),de
	ld a,(de)
.lb281
	or a
	ret z
	ld l,a
	ld h,#00
	add hl,hl
	ld de,lb2d0
	add hl,de
	ld c,(hl)
	ld a,#04
	call lb2a5
	inc hl
	ld c,(hl)
	ld a,#05
	call lb2a5
	ld c,#0f
	ld a,#0a
	call lb2a5
	ret
	db #00,#00,#00,#00,#00
.lb2a5
	push af
	push bc
	ld b,#f4
	out (c),a
	ld b,#f6
	in a,(c)
	or #c0
	out (c),a
	and #3f
	out (c),a
	ld b,#f4
	out (c),c
	ld b,#f6
	ld c,a
	or #80
	out (c),a
	out (c),c
	pop bc
	pop af
	ret
	nop
	nop
.lb2c9
	nop
	nop
.lb2cb
	nop
	nop
.lb2cd
	db #00,#00,#00
.lb2d0
	dw #03bc,#0386,#0353,#0324
	dw #02f6,#02cc,#02a4,#027e
	dw #025a,#0238,#0218,#01fa
	dw #01de,#01c3,#01aa,#0192
	dw #017b,#0166,#0152,#013f
	dw #012d,#011c,#010c,#00fd
	dw #00ef,#00e1,#00d5,#00c9
	dw #00be,#00b3,#00a9,#009f
	dw #0096,#008e,#0086,#007f
	dw #0077,#0071,#006a,#0064
	dw #005f,#0059,#0054,#0050
	dw #004b,#0047,#0043,#003f
	dw #003c,#0038,#0035,#0032
	dw #002f,#002d,#002a,#0028
	dw #0026,#0024,#0022,#0020
.lb348
	dw lb45c,lb45c,lb48f,lb4c2
	dw lb4f5,lb50a,lb50a,#0000
	dw lb348
	db #0e,#00,#1a,#0e,#00,#1a,#09,#00
	db #15,#09,#00,#15,#0b,#00,#17,#0b
	db #00,#17,#06,#00,#12,#06,#00,#12
	db #07,#00,#13,#07,#00,#13,#02,#00
	db #0e,#02,#00,#0e,#04,#00,#10,#04
	db #00,#10,#09,#00,#15,#09,#00,#15
	db #07,#00,#13,#07,#00,#13,#07,#00
	db #13,#07,#00,#13,#02,#00,#0e,#02
	db #00,#0e,#02,#00,#0e,#02,#00,#0e
	db #0b,#00,#17,#0b,#00,#17,#0b,#00
	db #17,#0b,#00,#17,#04,#00,#10,#04
	db #00,#10,#04,#00,#10,#04,#00,#10
	db #09,#00,#15,#09,#00,#15,#09,#00
	db #15,#09,#00,#15,#02,#00,#0e,#02
	db #00,#0e,#06,#00,#12,#06,#00,#12
	db #07,#00,#13,#07,#00,#13,#0a,#00
	db #16,#0a,#00,#16,#0a,#00,#16,#0a
	db #00,#16,#0c,#00,#18,#0c,#00,#18
	db #0c,#00,#18,#0c,#00,#18,#0e,#00
	db #1a,#0e,#00,#1a,#0e,#00,#1a,#0e
	db #00,#1a,#0e,#00,#1a,#0e,#00,#1a
	db #0e,#00,#1a,#0e,#00,#1a,#09,#00
	db #15,#09,#00,#15,#09,#00,#15,#09
	db #00,#15,#0b,#00,#17,#0b,#00,#17
	db #0b,#00,#17,#0b,#00,#17,#06,#00
	db #12,#06,#00,#12,#06,#00,#12,#06
	db #00,#12,#07,#00,#13,#07,#00,#13
	db #07,#00,#13,#07,#00,#13,#02,#00
	db #0e,#02,#00,#0e,#02,#00,#0e,#02
	db #00,#0e,#04,#00,#10,#04,#00,#10
	db #04,#00,#10,#04,#00,#10,#09,#00
	db #15,#09,#00,#15,#09,#00,#15,#09
.lb45c equ $ + 2
	db #00,#15,#59,#b3,#26,#00,#00,#2a
	db #00,#26,#28,#00,#00,#21,#00,#00
	db #26,#25,#26,#25,#00,#23,#2a,#00
	db #00,#1e,#00,#00,#23,#00,#23,#21
	db #00,#1f,#26,#00,#00,#1a,#00,#00
	db #1c,#00,#1c,#23,#00,#1c,#21,#00
.lb48f equ $ + 5
	db #21,#28,#00,#21,#ff,#89,#b3,#23
	db #00,#00,#00,#00,#00,#00,#00,#23
	db #21,#00,#1f,#26,#00,#00,#00,#00
	db #00,#1a,#00,#00,#1a,#00,#1c,#1e
	db #00,#00,#00,#00,#00,#00,#00,#1e
	db #1c,#00,#1a,#1c,#00,#00,#00,#00
	db #00,#23,#00,#00,#1c,#00,#23,#ff
.lb4c2
	db #b9,#b3,#21,#00,#21,#28,#00,#00
	db #00,#00,#21,#28,#00,#21,#1e,#00
	db #00,#1c,#00,#1a,#21,#00,#00,#00
	db #00,#00,#23,#00,#00,#21,#00,#1f
	db #26,#00,#00,#00,#00,#00,#29,#00
	db #00,#26,#00,#29,#28,#00,#00,#00
.lb4f5 equ $ + 3
	db #00,#00,#ff,#e9,#b3,#2b,#00,#00
	db #28,#29,#2b,#2a,#00,#00,#00,#00
	db #00,#00,#00,#00,#00,#00,#00,#ff
.lb50a
	db #fb,#b3,#2a,#26,#21,#2a,#26,#21
	db #2a,#26,#21,#2a,#26,#21,#28,#25
	db #21,#28,#25,#21,#28,#25,#21,#28
	db #25,#21,#26,#23,#1e,#26,#23,#1e
	db #26,#23,#1e,#26,#23,#1e,#25,#21
	db #1c,#25,#21,#1c,#25,#21,#1c,#25
	db #21,#1c,#23,#1f,#1a,#23,#1f,#1a
	db #23,#1f,#1a,#23,#1f,#1a,#21,#1e
	db #1a,#21,#1e,#1a,#21,#1e,#1a,#21
	db #1e,#1a,#23,#1f,#1a,#23,#1f,#1a
	db #23,#1f,#1a,#23,#1f,#1a,#25,#21
	db #1c,#25,#21,#1c,#25,#21,#1c,#25
	db #21,#1c,#ff
;
.game_name
	db "Heartland",0
.game_year
	db "1986",0
.game_publisher
	db "Odin Software",0
.music_author
	db "",0
.music_comment
	db "",0

	read "music_end_v1_0.asm"
